package com.gilight.base.service.coupon;



import com.gilight.base.base.exception.ServiceException;
import com.gilight.base.dto.CouponAdminDTO;
import com.gilight.base.model.CouponDO;
import com.gilight.base.model.Page;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: kbq
 * Date: 2019-07-12
 * Time: 下午10:47
 */

/**
 * 优惠卷
 */
public interface AdminCouponService {

    /**
     *优惠管理
     * @param title 优惠卷标题
     * @param type  优惠卷类别，如满减
     * @param isVip 是否vip专享
     * @param description 优惠卷描述
     * @param total       优惠卷总数
     * @param limit       用户限制领取
     * @param discount    优惠价格
     * @param min         满足优惠的最低价格
     * @param status      优惠卷状态
     * @param categoryId  优惠类别
     * @param days        优惠时长
     * @param gmtStart    优惠开始时间
     * @param gmtEnd      优惠结束时间
     * @return
     * @throws ServiceException
     */
    public CouponDO create(
            CouponDO couponDO
            ) throws ServiceException;

    /**
     * 删除
     * @param id
     * @return
     * @throws ServiceException
     */
    public Boolean delete(
            Long id) throws ServiceException;

    /**
     * 修改
     * @param id  优惠卷ID
     * @param title 优惠卷标题
     * @param type  优惠卷类别，如满减
     * @param isVip 是否vip专享
     * @param description 优惠卷描述
     * @param total       优惠卷总数
     * @param limit       用户限制领取
     * @param discount    优惠价格
     * @param min         满足优惠的最低价格
     * @param status      优惠卷状态
     * @param categoryId  优惠类别
     * @param days        优惠时长
     * @param gmtStart    优惠开始时间
     * @param gmtEnd      优惠结束时间
     * @return
     * @throws ServiceException
     */
    public Boolean edit(
            CouponDO couponDO) throws ServiceException;

    /**
     * 更新优惠卷状态
     * @param id     优惠卷ID
     * @param status 优惠卷状态
     * @return
     * @throws ServiceException
     */
    public Boolean updateCouponStatus(
            Long id,
            Integer status) throws ServiceException;


    /**
     * 查询优惠卷列表
     * @param title
     * @param type
     * @param status
     * @param pageNo
     * @param limit
     * @param zzjgId
     * @return
     * @throws ServiceException
     */
    public Page<CouponAdminDTO> list(
            String title,
            Integer type,
            Integer status,
            Integer pageNo,
            Integer limit, Long zzjgId) throws ServiceException;

}
